home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 1 / PC Actual CD 01.iso / f1 / fractal.arj / VISOR.C < prev    next >
Encoding:
C/C++ Source or Header  |  1992-09-04  |  4.2 KB  |  178 lines

  1. /***************************************************************************/
  2. /*     El programa VISOR permite la visualización de imágenes grabadas     */
  3. /*   con el programa FRACTAL.                                              */
  4. /***************************************************************************/
  5.  
  6.  
  7. #include <graphics.h>
  8. #include <bios.h>
  9. #include <ctype.h>
  10. #include <teclas.h>
  11. #include <stdlib.h>
  12. #include <conio.h>
  13. #include <stdio.h>
  14. #include <dos.h>
  15.  
  16. void main()
  17. {
  18.  
  19. unsigned char
  20.     frac[30000],                /*Array que sirve para multiples almacenamientos.*/
  21.     limpia_texto[6500];    /*Limpia la linea de estado.*/
  22.  
  23. FILE
  24.     *archivo;                        /*Gestiona todos los ficheros del programa.*/
  25.  
  26. union
  27.     {
  28.     int   i;
  29.     char  c;
  30.     }    tecla_pulsada;        /*Gestiona las pulsaciones del teclado.*/
  31.  
  32. char
  33.     nombre[13],         /*Gestiona el nombre del archivo.*/
  34.     borra_ch[90];       /*Borra un caracter.*/
  35.  
  36. int
  37.     driver=VGA,         /*Controlador y modo para VGA 640x480.*/
  38.     modo=VGAHI,
  39.     x,                  /*Situación de los caracteres del nombre.*/
  40.     n,                  /*Número de caracter del nombre.*/
  41.     fin;                /*Gestiona la salida del bucle del nombre.*/
  42.  
  43. unsigned
  44.     num_char;           /*Número de caracteres del fichero.*/
  45.  
  46. /***************************************************************************/
  47.  
  48.  
  49. clrscr();
  50.  
  51. registerbgidriver(EGAVGA_driver);
  52.  
  53. initgraph(&driver,&modo,"");
  54. getimage(375,465,383,475,borra_ch);
  55. getimage(1,465,628,475,limpia_texto);
  56. rectangle(0,10,639,23);
  57. rectangle(0,463,639,476);
  58. rectangle(220,130,421,331);
  59. setcolor(9);
  60. outtextxy(1,13,"                                   Utilidad VISOR       Javier Trujillo-1992");
  61.  
  62. /***************************************************************************/
  63.  
  64. for(;;)
  65.     {
  66.     for(n=0;n<13;n++)
  67.         nombre[n]='\0';
  68.     n=0;
  69.     fin=0;
  70.     x=375;
  71.     putimage(1,465,limpia_texto,0);
  72.     outtextxy(1,466,"                 F3-Cargar Archivo             F10-Salir al dos");
  73.     while((tecla_pulsada.i=bioskey(0))!=F3)
  74.         {
  75.         switch(tecla_pulsada.c)
  76.             {
  77.             case 0:
  78.                 switch(tecla_pulsada.i)
  79.                     {
  80.                     case F3:
  81.                         break;
  82.                     case F10:
  83.                         restorecrtmode();
  84.                         printf("¡Hasta pronto!\n\n");
  85.                         exit(0);
  86.                     default:
  87.                         break;
  88.                     }
  89.             default:
  90.                 putch('\a');
  91.                 break;
  92.             };
  93.         };
  94.     putimage(1,465,limpia_texto,0);
  95.     outtextxy(1,466," Escriba el nombre del archivo y pulse INTRO:          .frc   ESCAPE-Cancelar");
  96.     setcolor(11);
  97.  
  98.     do
  99.         {
  100.         tecla_pulsada.i = bioskey(0);
  101.         if ((n < 8)&&(isalnum(tecla_pulsada.c)))
  102.             {
  103.             nombre[n] = tecla_pulsada.c;        /* Caracter normal                   */
  104.             outtextxy(x,466,&nombre[n]);
  105.             n++;
  106.             x+=8;
  107.             }
  108.         else
  109.             {
  110.             switch (tecla_pulsada.i)
  111.                 {
  112.                 case INTRO:               /* Vuelta de carro o escape          */
  113.                     if (n!=0)
  114.                         fin=1;
  115.                     else
  116.                         putch('\a');
  117.                     break;
  118.  
  119.                 case ESCAPE:
  120.                     fin = 1;              /* Fin de entrada                    */
  121.                     break;
  122.  
  123.                 case RETROCEDER:             /* Espacio-atras                     */
  124.                     if (x>375)
  125.                         {
  126.                         x-=8;
  127.                         putimage(x,465,borra_ch,0);
  128.                         nombre[n]='\0';
  129.                         n--;
  130.  
  131.                         }
  132.                     else
  133.                         putch('\a');
  134.                     break;
  135.  
  136.                 default:
  137.                     putch('\a');
  138.                     break;
  139.                 };
  140.             };
  141.         } while (!fin);
  142.  
  143.     if (tecla_pulsada.i==INTRO)
  144.         {
  145.         nombre[n]='.';
  146.         nombre[n+1]='i';
  147.         nombre[n+2]='m';
  148.         nombre[n+3]='g';
  149.         nombre[n+4]='\0';
  150.  
  151.         num_char=(imagesize(0,0,199,199)/sizeof(char));
  152.  
  153.         if((archivo=fopen(nombre,"rb"))==NULL)
  154.             {
  155.             putimage(1,465,limpia_texto,0);
  156.             outtextxy(1,466,"       El fichero seleccionado no existe o esta dañado, pruebe de nuevo.");
  157.             putch('\a');
  158.             delay(2000);
  159.             }
  160.         else
  161.             {
  162.             fread(frac, sizeof(char) ,num_char,archivo);
  163.             putimage(221,131,frac,0);
  164.             putimage(1,12,limpia_texto,0);
  165.             setcolor(9);
  166.             outtextxy(1,13,"  Fichero                            Utilidad VISOR       Javier Trujillo-1992");
  167.             setcolor(11);
  168.             outtextxy(85,13,nombre);
  169.             fclose(archivo);
  170.             };
  171.         };
  172.     setcolor(9);
  173.     };
  174. }
  175.  
  176. /***************************************************************************/
  177. /***************************   FIN DE FICHERO      ****************************/
  178. /***************************************************************************/